/**
 * 
 */
package com.java.test.user.service;

import com.alibaba.fastjson.JSONObject;
import com.java.test.user.dto.*;
import com.java.test.util.PageInfo;

import java.util.List;

/**
 * @author Administrator
 *
 */
public interface MemberService {

	/**
	 * 查询会员列表
	 * 
	 * @param info
	 * @return
	 */
	public List<MemberInfo> selectMemberList(MemberInfo info);

	/**
	 * 查询会员分成列表
	 * 
	 * @return
	 */
	public List<MemberSliceInfo> selectMemberSliceList();

	/**
	 * 查询会员等级列表
	 * 
	 * @return
	 */
	public List<MemberGradeInfo> selectMemberGradeList();

	/**
	 * 添加会员等级
	 * 
	 * @param info
	 * @return
	 */
	public int addMemberGrade(MemberGradeInfo info);

	/**
	 * 修改会员等级
	 * 
	 * @param info
	 * @return
	 */
	public int updateMemberGrade(MemberGradeInfo info);

	/**
	 * 查询会员黑名单
	 * 
	 * @param info
	 * @return
	 */
	public PageInfo<BlackIpInfo> selectMemberBlackipList(BlackIpInfo info, PageInfo<BlackIpInfo> page);

	/**
	 * 新增黑名单
	 * 
	 * @param info
	 * @return
	 */
	public int insertBlackIp(BlackIpInfo info);

	public int deleteBlackIp(int[] ids);

	/**
	 * 跟新黑名單狀態
	 * 
	 * @param info
	 * @return
	 */
	public int updateBlackStatus(BlackIpInfo info);

	/**
	 * id查询分层
	 * 
	 * @param id
	 * @return
	 */
	public MemberSliceInfo selectById(int id);

	/**
	 * id更新分层
	 * 
	 * @param id
	 * @return
	 */
	public int updateMemberSliceById(MemberSliceInfo info);

	/**
	 * 添加分层
	 * 
	 * @param info
	 * @return
	 */
	public int insertMemberSlice(MemberSliceInfo info);

	/**
	 * 根据id查询等级
	 * 
	 * @param id
	 * @return
	 */
	public MemberGradeInfo selectMemberGradeInfoById(int id);

	/**
	 * ip审查
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<IpcheckInfo> selectIpCheckByTimeList(IpcheckInfo info, PageInfo<IpcheckInfo> page);

	/**
	 * ip審查更新
	 * 
	 * @param info
	 * @return
	 */
	public int updateBlackStatus(IpcheckInfo info);

	/**
	 * 银行
	 * 
	 */
	public PageInfo<BankAccountInfo> selectbankAcountList(BankAccountInfo info, PageInfo<BankAccountInfo> page);

	/**
	 * 添加银行账号
	 * 
	 * @param info
	 * @return
	 */
	public int insertBankAccount(BankAccountInfo info);

	/**
	 * 删除银行账户
	 * 
	 * @param info
	 * @return
	 */
	public int delBankAccount(BankAccountInfo info);

	/**
	 * 修改银行账户
	 * 
	 * @param info
	 * @return
	 */
	public int updateBankAccount(BankAccountInfo info);

	/**
	 * 
	 * 查询单个银行账户
	 * 
	 * @param info
	 * @return
	 */
	public BankAccountInfo selectbackAcountInfo(BankAccountInfo info);

	/**
	 * 账号禁用
	 * 
	 * @param info
	 * @return
	 */
	public int updatePlayAccountNotUse(PlayAccountInfo info);

	/**
	 * 账号可用禁用
	 * 
	 * @param info
	 * @return
	 */
	public int updatePlayAccountUse(PlayAccountInfo info);

	/**
	 * 账号批量禁用
	 * 
	 * @param info
	 * @return
	 */
	public int updatePlayAccountNotUsepl(final int[] ids);

	/**
	 * 账号批量使用
	 * 
	 * @param info
	 * @return
	 */
	public int updatePlayAccountUsepl(final int[] ids);

	/**
	 * 账号充值
	 * 
	 * @param info
	 * @return
	 */
	public int insertacountReset(List<AcountReset> list);

	/**
	 * 游戏用户账号查询
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<PlayAccountInfo> selectplayAcountList(PlayAccountInfo info, PageInfo<PlayAccountInfo> page);
	
	
	
	/**
	 * 游戏用户账号查询
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<PlayAccountInfo> selectonlineuser(PlayAccountInfo info, PageInfo<PlayAccountInfo> page);
	
	
	

	/**
	 * 用户行为记录
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<BehaviorInfo> selectbehaviorInfoList(String game_account, PageInfo<BehaviorInfo> page, String startTime,
			String endTime);
	
	
	
	/**
	 * 存款记录
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<DepositInfo> selectdepositInfoList(PageInfo<DepositInfo> page);

	
	

	/**
	 * 提现记录
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<ReflectInfo> selectreflectInfoInfoList(PageInfo<ReflectInfo> page);

	
	/**
	 * 交易流水
	 * 
	 * @param info
	 * @param page
	 * @return
	 */
	public PageInfo<RunWaterInfo> selectrunwaterInfoList(PageInfo<RunWaterInfo> page);
	

	/**
	 * 查询所有交易流水
	 * @return
	 */
	public JSONObject selectallrunwaterInfo(PageInfo<RunWaterInfo> page);
	
	
	/**
	 * 
	 * 根据id查询账号
	 * @param id
	 * @return
	 */
	public PlayAccountInfo selectplayaccountbyId(int id);

	/**
	 *  查询当前会员条数
	 * @author
	 * @date 2020/7/23 0023 10:25
	 * @return int
	 */
    int getMemberListSize();

    /**
	 * 查询新会员 
	 * @author 
	 * @date 2020/7/23 0023 10:25 
	 * @return java.util.List<com.java.test.user.dto.MemberInfo>
	 */
	List<PlayAccountInfo> getMemberListNow();

	/**
	 * 查询老会员
	 * @author 
	 * @date 2020/7/23 0023 10:30
	 * @return java.util.List<com.java.test.user.dto.MemberInfo>
	 */
	List<PlayAccountInfo> getMemberListOld();

	/**
	 * 会员等级排序查询
	 * @author 
	 * @date 2020/7/28 0028 15:52
	 * @return java.util.List<com.java.test.user.dto.MemberGradeInfo>
	 */
	List<MemberGradeInfo> selectMemberGradeListOrderBy();

	/**
	 * 查询会员按照id
	 * @param accountName
	 * @author 
	 * @date 2020/8/4 0004 14:30 
	 * @return com.java.test.user.dto.PlayAccountInfo
	 */
	PlayAccountInfo getMemberListByAccountName(String accountName);

	/**
	 * 查询提款账号
	 * @param info
	 * @author
	 * @date 2020/8/5 0005 14:46
	 * @return java.util.List<com.java.test.user.dto.BankAccountInfo>
	 */
	List<BankAccountInfo> selectBankAccountListPush(BankAccountInfo info);

	/**
	 * 修改金额
	 * @param amount
	 * @param account
	 * @author 
	 * @date 2020/8/6 0006 11:09 
	 * @return int
	 */
	int updateFrozenAmount(Double[] amount,String account);

	/**
	 * @param info
	 * @return
	 */
	List<PlayAccountInfo> exportExcel(PlayAccountInfo info);

	/**
	 * @param info
	 * @return
	 */
	int updateplayremarks(PlayAccountInfo info);
}
